Skip to content

Commit 5612825

Browse files
author
Vanessa Arndorfer
committed
Add ConnGrowth weight output
1 parent 2c58c22 commit 5612825

File tree

4 files changed

+37
-3
lines changed

4 files changed

+37
-3
lines changed

Simulator/Connections/Neuro/ConnGrowth_d.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,12 @@ void ConnGrowth::updateEdgesWeights(int numVertices, AllVertices &vertices, AllE
7777

7878
// copy device synapse count to host memory
7979
edges.copyDeviceEdgeCountsToHost(allEdgesDevice);
80-
// copy device synapse summation coordinate to host memory
81-
dynamic_cast<AllSpikingSynapses &>(edges).copyDeviceEdgeSumIdxToHost(allEdgesDevice);
80+
81+
// copy device synapse summation coordinate and weights to host memory
82+
AllSpikingSynapses &synapses = dynamic_cast<AllSpikingSynapses &>(edges);
83+
synapses.copyDeviceEdgeSumIdxToHost(allEdgesDevice);
84+
synapses.copyDeviceEdgeWeightsToHost(allEdgesDevice);
85+
86+
// output weight matrix every epoch
87+
synapses.outputWeights(simulator.getCurrentStep());
8288
}

Simulator/Core/GPUModel.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ void GPUModel::updateConnections()
237237
vertices.copyFromDevice(allVerticesDevice_);
238238

239239
// Update Connections data
240-
if (connections_->updateConnections(vertices)) {
240+
if (connections_->updateConnections()) {
241241
connections_->updateEdgesWeights(Simulator::getInstance().getTotalVertices(), vertices, edges,
242242
allVerticesDevice_, allEdgesDevice_, getLayout());
243243
// create edge index map

Simulator/Edges/Neuro/AllSpikingSynapses.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,12 @@ class AllSpikingSynapses : public AllNeuroEdges {
199199
/// @param allEdgesDevice GPU address of the allEdges struct on device memory.
200200
void copyDeviceEdgeSumIdxToHost(void *allEdgesDevice);
201201

202+
/// Get weights matrix in AllEdges struct on device memory.
203+
///
204+
/// @param allEdgesDevice GPU address of the AllSpikingSynapsesDeviceProperties struct
205+
/// on device memory.
206+
virtual void copyDeviceEdgeWeightsToHost(void *allEdgesDevice) ;
207+
202208
protected:
203209
/// Allocate GPU memories to store all synapses' states,
204210
/// and copy them from host to GPU memory.

Simulator/Edges/Neuro/AllSpikingSynapses_d.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,28 @@ void AllSpikingSynapses::copyDeviceEdgeCountsToHost(void *allEdgesDevice)
273273
//allEdges.countVertices_ = 0;
274274
}
275275

276+
/// Get weights matrix in AllEdges struct on device memory.
277+
///
278+
/// @param allEdgesDevice GPU address of the AllSpikingSynapsesDeviceProperties struct
279+
/// on device memory.
280+
void AllSpikingSynapses::copyDeviceEdgeWeightsToHost(void *allEdgesDevice)
281+
{
282+
AllSpikingSynapsesDeviceProperties allEdgesDeviceProps;
283+
284+
int numVertices = Simulator::getInstance().getTotalVertices();
285+
BGSIZE maxTotalSynapses = Simulator::getInstance().getMaxEdgesPerVertex() * numVertices;
286+
287+
HANDLE_ERROR(cudaMemcpy(&allEdgesDeviceProps, allEdgesDevice,
288+
sizeof(AllSpikingSynapsesDeviceProperties), cudaMemcpyDeviceToHost));
289+
290+
// std::cout << "size: " << vertexCount * vertexCount * sizeof(BGFLOAT) << std::endl;
291+
// std::cout << "W_.data(): " << W_.data() << std::endl;
292+
// std::cout << "allEdgesDeviceProps.W_: " << allEdgesDeviceProps.W_ << std::endl;
293+
294+
HANDLE_ERROR(cudaMemcpy(W_.data(), allEdgesDeviceProps.W_,
295+
maxTotalSynapses * sizeof(BGFLOAT), cudaMemcpyDeviceToHost));
296+
}
297+
276298
/// Get summationCoord and in_use in AllEdges struct on device memory.
277299
///
278300
/// @param allEdgesDevice GPU address of the AllSpikingSynapsesDeviceProperties struct

0 commit comments

Comments
 (0)