Skip to content

Instantly share code, notes, and snippets.

View jefflarkin's full-sized avatar
🙃
Happy

Jeff Larkin jefflarkin

🙃
Happy
View GitHub Profile
@jefflarkin
jefflarkin / profile.sh
Last active December 16, 2015 01:39
Quick trick for getting different cuda command-line profiler log files per node on a Cray XK7.
#!/bin/bash
# USAGE: Add between aprun options and executable
# For Example: aprun -n 16 -N 1 ./foo arg1 arg2
# Becomes: aprun -n 16 -N 1 ./profile.sh ./foo arg1 arg2
# Enable command-line profiler
export COMPUTE_PROFILE=1
# Set output to CSV (optional)
export COMPUTE_PROFILE_CSV=1
@jefflarkin
jefflarkin / cudaCheckError.c
Created April 15, 2013 20:18
A simple macro for checking errors after CUDA library calls.
//Macro for checking cuda errors following a cuda launch or api call
#define cudaCheckError() { \
cudaError_t e=cudaGetLastError(); \
if(e!=cudaSuccess) { \
printf("Cuda failure %s:%d: '%s'\n",__FILE__,__LINE__,cudaGetErrorString(e)); \
exit(0); \
} \
}
@jefflarkin
jefflarkin / cudaCheckError.c
Created April 15, 2013 20:18
A simple macro for checking errors after CUDA library calls.
//Macro for checking cuda errors following a cuda launch or api call
#define cudaCheckError() { \
cudaError_t e=cudaGetLastError(); \
if(e!=cudaSuccess) { \
printf("Cuda failure %s:%d: '%s'\n",__FILE__,__LINE__,cudaGetErrorString(e)); \
exit(0); \
} \
}
@jefflarkin
jefflarkin / nvprof.sh
Last active January 30, 2017 01:32
This script allows for generating nvprof output files based on the hostname of a Cray XK7 compute node.
#!/bin/bash
# USAGE: Add between aprun options and executable
# For Example: aprun -n 16 -N 1 ./foo arg1 arg2
# Becomes: aprun -n 16 -N 1 ./nvprof.sh ./foo arg1 arg2
# Give each *node* a separate file
LOG=profile_$(hostname).nvp
# Stripe each profile file by 1 to share the load on large runs
lfs setstripe -c 1 $LOG
@jefflarkin
jefflarkin / gist:8293839
Created January 7, 2014 02:36
Example of using Charlieplexing [http://en.wikipedia.org/wiki/Charlieplexing] to control 6 LEDs with an arduino.
/** Charlieplexing 6 LEDs with Arduino Uno **/
/** Jeff Larkin [http://github.com/jefflarkin] **/
/*
* Wiring Diagram:
*
* pin 2 ===== led0+, led1- ===== led4+, led5-
* pin 4 ===== led1+, led0- ===== led2+, led3-
* pin 6 ===== led3+, led2- ===== led5+, led4-
*
*/
@jefflarkin
jefflarkin / app.js
Created January 16, 2014 03:01
Error I'mm seeing from HAPI hello world example.
var Hapi = require('hapi');
var server = Hapi.createServer(process.env.IP,parseInt(process.env.PORT));
// Define the route
var hello = {
handler: function (request) {
request.reply({ greeting: 'hello world' });
}
};
@jefflarkin
jefflarkin / nvtx.F90
Last active February 21, 2023 16:57
Simple Fortran bindings to a subset of the NVTX library.
! Fortran bindings for a small subset of the NVIDIA Tools Extensions library
module nvtx
use iso_c_binding
public :: nvtxrangepusha, nvtxrangepop
public :: nvtxrangepushaargb
interface
! Annotate the timeline with a message
! Parameters:
! * string : the message in a string format
subroutine nvtxrangepusha(string) bind(C, name="nvtxRangePushA")
@jefflarkin
jefflarkin / nvtx.w
Last active February 12, 2020 17:56
Script for generating PMPI wrappers for NVTX ranges using https://github.com/scalability-llnl/wrap
#include <pthread.h>
#include <nvToolsExt.h>
#include <nvToolsExtCudaRt.h>
// Setup event category name
{{fn name MPI_Init}}
nvtxNameCategoryA(999, "MPI");
{{callfn}}
int rank;
PMPI_Comm_rank(MPI_COMM_WORLD, &rank);
char name[256];
@jefflarkin
jefflarkin / keybase.md
Created May 28, 2015 15:03
Keybase Identify Verification

Keybase proof

I hereby claim:

  • I am jefflarkin on github.
  • I am jefflarkin (https://keybase.io/jefflarkin) on keybase.
  • I have a public key whose fingerprint is 13D8 BCCC 1A50 57D3 FB4F E33A 950C 167F 0C1A 041D

To claim this, I am signing this object:

@jefflarkin
jefflarkin / nvprof_timeline.sh
Last active June 5, 2017 20:53
Script for gathering an nvprof timeline on a Cray XK7
#!/bin/bash
# USAGE: Add between aprun options and executable
# For Example: aprun -n 16 -N 1 ./foo arg1 arg2
# Becomes: aprun -n 16 -N 1 ./nvprof.sh ./foo arg1 arg2
export PMI_NO_FORK=1
# Give each *rank* a separate file
LOG=timeline_$ALPS_APP_PE.nvprof
# Set the process and context names