Skip to content

Instantly share code, notes, and snippets.

@zeryx
Created September 4, 2015 18:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zeryx/01f3674e64e1211f73ee to your computer and use it in GitHub Desktop.
Save zeryx/01f3674e64e1211f73ee to your computer and use it in GitHub Desktop.
command queue if/else block
for(int itr=0; itr< params.array[26]; itr++){//every order is sequential and run after the previous order to massively simplify the workload in this kernel.
double tmp;
//set stuff to zero
if(commandQueue[itr].first.def == typeHidden && commandQueue[itr].second.def == typeZero){
neuroZero(Vec.array[hiddenOffset+commandQueue[itr].first.id*ind]);
}
else if(commandQueue[itr].first.def == typeMemGateIn && commandQueue[itr].second.def == typeZero){
neuroZero(Vec.array[memGateInOffset+commandQueue[itr].first.id*ind]);
}
else if(commandQueue[itr].first.def == typeMemGateOut && commandQueue[itr].second.def == typeZero){
neuroZero(Vec.array[memGateOutOffset+commandQueue[itr].first.id*ind]);
}
else if(commandQueue[itr].first.def == typeMemGateForget && commandQueue[itr].second.def == typeZero){
neuroZero(Vec.array[memGateForgetOffset+commandQueue[itr].first.id*ind]);
}
else if(commandQueue[itr].first.def == typeMemory && commandQueue[itr].second.def == typeZero){
neuroZero(Vec.array[memOffset+commandQueue[itr].first.id*ind]);
}
else if(commandQueue[itr].first.def == typeOutput && commandQueue[itr].second.def == typeZero){
neuroZero(Vec.array[outputOffset+commandQueue[itr].first.id*ind]);
}
//first->second summations
else if(commandQueue[itr].first.def == typeInput && commandQueue[itr].second.def == typeHidden){
tmp = Vec.array[inputOffset + commandQueue[itr].first.id*ind]*Vec.array[weightsOffset+n++*ind];
neuroSum(Vec.array[hiddenOffset + commandQueue[itr].second.id*ind], tmp);
}
else if(commandQueue[itr].first.def == typeInput && commandQueue[itr].second.def == typeMemGateIn){
tmp = Vec.array[inputOffset + commandQueue[itr].first.id*ind]*Vec.array[weightsOffset+n++*ind];
neuroSum(Vec.array[memGateInOffset + commandQueue[itr].second.id*ind], tmp);
}
else if(commandQueue[itr].first.def == typeInput && commandQueue[itr].second.def == typeMemGateOut){
tmp = Vec.array[inputOffset + commandQueue[itr].first.id*ind]*Vec.array[weightsOffset+n++*ind];
neuroSum(Vec.array[memGateOutOffset + commandQueue[itr].second.id*ind], tmp);
}
else if(commandQueue[itr].first.def == typeInput && commandQueue[itr].second.def == typeMemGateForget){
tmp = Vec.array[inputOffset + commandQueue[itr].first.id*ind]*Vec.array[weightsOffset+n++*ind];
neuroSum(Vec.array[memGateForgetOffset + commandQueue[itr].second.id*ind], tmp);
}
else if(commandQueue[itr].first.def == typeHidden && commandQueue[itr].second.def == typeHidden){
tmp = Vec.array[hiddenOffset + commandQueue[itr].first.id*ind]*Vec.array[weightsOffset+n++*ind];
neuroSum(Vec.array[hiddenOffset + commandQueue[itr].second.id*ind], tmp);
}
else if(commandQueue[itr].first.def == typeHidden && commandQueue[itr].second.def == typeMemGateIn){
tmp = Vec.array[hiddenOffset + commandQueue[itr].first.id*ind]*Vec.array[weightsOffset+n++*ind];
neuroSum(Vec.array[memGateInOffset + commandQueue[itr].second.id*ind], tmp);
}
else if(commandQueue[itr].first.def == typeHidden && commandQueue[itr].second.def == typeOutput){
tmp = Vec.array[hiddenOffset + commandQueue[itr].first.id*ind]*Vec.array[weightsOffset+n++*ind];
neuroSum(Vec.array[outputOffset + commandQueue[itr].second.id*ind], tmp);
}
else if(commandQueue[itr].first.def == typeHidden && commandQueue[itr].second.def == typeMemGateOut){
tmp = Vec.array[hiddenOffset + commandQueue[itr].first.id*ind]*Vec.array[weightsOffset+n++*ind];
neuroSum(Vec.array[memGateOutOffset + commandQueue[itr].second.id*ind], tmp);
}
else if(commandQueue[itr].first.def == typeHidden && commandQueue[itr].second.def == typeMemGateForget){
Vec.array[hiddenOffset + commandQueue[itr].first.id*ind]*Vec.array[weightsOffset+n++*ind];
neuroSum(Vec.array[memGateForgetOffset + commandQueue[itr].second.id*ind], tmp);
}
//memory gates
else if(commandQueue[itr].first.def == typeInput && commandQueue[itr].second.def == typeMemory && commandQueue[itr].third.def == typeMemGateIn){
tmp = Vec.array[inputOffset+commandQueue[itr].first.id*ind]; // squash inputs so as to not saturate hidden neurons
neuroSquash(tmp);
neuroMemGate(Vec.array[memGateInOffset+commandQueue[itr].third.id*ind], tmp, Vec.array[memOffset+commandQueue[itr].second.id*ind], 0.5);
}
else if(commandQueue[itr].first.def == typeHidden && commandQueue[itr].second.def == typeMemory && commandQueue[itr].third.def == typeMemGateIn){
tmp = Vec.array[hiddenOffset+commandQueue[itr].first.id*ind];
neuroSquash(tmp);
neuroMemGate(Vec.array[memGateInOffset+commandQueue[itr].third.id*ind], tmp, Vec.array[memOffset+commandQueue[itr].second.id*ind], 0.5);
}
else if(commandQueue[itr].first.def == typeOutput && commandQueue[itr].second.def == typeMemory && commandQueue[itr].third.def == typeMemGateIn){
neuroMemGate(Vec.array[memGateInOffset+commandQueue[itr].third.id*ind],
Vec.array[outputOffset+commandQueue[itr].first.id*ind],
Vec.array[memOffset + commandQueue[itr].second.id*ind], 0.5);
}
else if(commandQueue[itr].first.def == typeMemory && commandQueue[itr].second.def == typeHidden && commandQueue[itr].third.def == typeMemGateOut){
neuroMemGate(Vec.array[memGateOutOffset+commandQueue[itr].third.id*ind],
Vec.array[memOffset+commandQueue[itr].first.id*ind],
Vec.array[hiddenOffset+commandQueue[itr].second.id*ind], 0.5);
}
else if(commandQueue[itr].first.def == typeMemory && commandQueue[itr].second.def == typeOutput && commandQueue[itr].third.def == typeMemGateOut){
neuroMemGate(Vec.array[memGateOutOffset+commandQueue[itr].third.id*ind],
Vec.array[memOffset+commandQueue[itr].first.id*ind],
Vec.array[outputOffset+commandQueue[itr].second.id*ind], 0.5);
}
else if(commandQueue[itr].first.def == typeMemory && commandQueue[itr].second.def == typeMemGateForget){
neuroMemForget(Vec.array[memGateForgetOffset+commandQueue[itr].second.id*ind],
Vec.array[memOffset + commandQueue[itr].first.id*ind], 0.5);
}
//bias
else if(commandQueue[itr].first.def == typeBias && commandQueue[itr].second.def == typeHidden){
tmp = 1*Vec.array[weightsOffset + n++*ind];
neuroSum(Vec.array[hiddenOffset + commandQueue[itr].second.id*ind], tmp);
}
else if(commandQueue[itr].first.def == typeBias && commandQueue[itr].second.def == typeMemGateIn){
tmp = 1*Vec.array[weightsOffset + n++*ind];
neuroSum(Vec.array[memGateInOffset + commandQueue[itr].second.id*ind], tmp);
}
else if(commandQueue[itr].first.def == typeBias && commandQueue[itr].second.def == typeMemGateOut){
tmp = 1*Vec.array[weightsOffset+n++*ind];
neuroSum(Vec.array[memGateOutOffset + commandQueue[itr].second.id*ind], tmp);
}
else if(commandQueue[itr].first.def == typeBias && commandQueue[itr].second.def == typeMemGateForget){
tmp = 1*Vec.array[weightsOffset+n++*ind];
neuroSum(Vec.array[memGateForgetOffset + commandQueue[itr].second.id*ind], tmp);
}
else if(commandQueue[itr].first.def == typeBias && commandQueue[itr].second.def == typeOutput){
tmp = 1*Vec.array[weightsOffset+n++*ind];
neuroSum(Vec.array[outputOffset + commandQueue[itr].second.id*ind], tmp);
}
//squashing
else if(commandQueue[itr].first.def == typeHidden && commandQueue[itr].second.def == typeSquash){
neuroSquash(Vec.array[hiddenOffset + commandQueue[itr].first.id*ind]);
}
else if(commandQueue[itr].first.def == typeMemGateIn && commandQueue[itr].second.def == typeSquash){
neuroSquash(Vec.array[memGateInOffset + commandQueue[itr].first.id*ind]);
}
else if(commandQueue[itr].first.def == typeMemGateOut && commandQueue[itr].second.def == typeSquash){
neuroSquash(Vec.array[memGateOutOffset + commandQueue[itr].first.id*ind]);
}
else if(commandQueue[itr].first.def == typeMemGateForget && commandQueue[itr].second.def == typeSquash){
neuroSquash(Vec.array[memGateForgetOffset + commandQueue[itr].first.id*ind]);
}
else if(commandQueue[itr].first.def == typeOutput && commandQueue[itr].second.def == typeSquash){
neuroSquash(Vec.array[outputOffset + commandQueue[itr].first.id*ind]);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment