Skip to content

Commit 85c8cbe

Browse files
committed
fix gpu version
1 parent 851309e commit 85c8cbe

7 files changed

Lines changed: 56 additions & 34 deletions

File tree

madspace/include/madspace/driver/tensor.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -211,10 +211,10 @@ class Device {
211211
virtual DeviceType device_type() const = 0;
212212
virtual void activate() const = 0;
213213
virtual void adam_step(
214-
const TensorVec& gradients,
215-
TensorVec& parameters,
216-
TensorVec& exp_avgs,
217-
TensorVec& exp_avg_sqs,
214+
const Tensor& gradient,
215+
Tensor& parameter,
216+
Tensor& exp_avg,
217+
Tensor& exp_avg_sq,
218218
double step_size,
219219
double beta1,
220220
double beta2,

madspace/src/cpu/device.cpp

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -69,35 +69,31 @@ void CpuDevice::tensor_add(const Tensor& source, Tensor& target) const {
6969
}
7070

7171
void CpuDevice::adam_step(
72-
const TensorVec& gradients,
73-
TensorVec& parameters,
74-
TensorVec& exp_avgs,
75-
TensorVec& exp_avg_sqs,
72+
const Tensor& gradient,
73+
Tensor& parameter,
74+
Tensor& exp_avg,
75+
Tensor& exp_avg_sq,
7676
double step_size,
7777
double beta1,
7878
double beta2,
7979
double eps,
8080
double bias_corr2_sqrt
8181
) const {
82-
for (auto [parameter, gradient, exp_avg, exp_avg_sq] :
83-
zip(parameters, gradients, exp_avgs, exp_avg_sqs)) {
84-
tensor_foreach_dynamic<
85-
kernel_adam_step<CpuTypes>,
86-
kernel_adam_step<SimdTypes>,
87-
1,
88-
3>(
89-
{&gradient},
90-
{&parameter, &exp_avg, &exp_avg_sq},
91-
1,
92-
*this,
93-
step_size,
94-
beta1,
95-
beta2,
96-
eps,
97-
bias_corr2_sqrt
98-
);
99-
// TODO: make async
100-
}
82+
tensor_foreach_dynamic<
83+
kernel_adam_step<CpuTypes>,
84+
kernel_adam_step<SimdTypes>,
85+
1,
86+
3>(
87+
{&gradient},
88+
{&parameter, &exp_avg, &exp_avg_sq},
89+
1,
90+
*this,
91+
step_size,
92+
beta1,
93+
beta2,
94+
eps,
95+
bias_corr2_sqrt
96+
);
10197
}
10298

10399
void AsyncCpuDevice::tensor_copy(const Tensor& source, Tensor& target) const {

madspace/src/cpu/device.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ class CpuDevice : public Device {
3131
DeviceType device_type() const override { return DeviceType::cpu; }
3232
void activate() const override {}
3333
void adam_step(
34-
const TensorVec& gradients,
35-
TensorVec& parameters,
36-
TensorVec& exp_avgs,
37-
TensorVec& exp_avg_sqs,
34+
const Tensor& gradient,
35+
Tensor& parameter,
36+
Tensor& exp_avg,
37+
Tensor& exp_avg_sq,
3838
double step_size,
3939
double beta1,
4040
double beta2,

madspace/src/driver/adam_optimizer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ TensorVec AdamOptimizer::step(const TensorVec& inputs) {
5050
output_grads.at(0) = Tensor(1.0, device);
5151
auto [input_grads, global_grads] =
5252
_runtime->run_backward(output_grads, stored_locals, eval_grad);
53-
device->adam_step(
53+
/*device->adam_step(
5454
global_grads,
5555
_parameters,
5656
_exp_avgs,
@@ -60,7 +60,7 @@ TensorVec AdamOptimizer::step(const TensorVec& inputs) {
6060
_beta2,
6161
_eps,
6262
bias_corr2_sqrt
63-
);
63+
);*/
6464
return outputs;
6565
}
6666

madspace/src/gpu/device.cu

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,21 @@ void GpuDevice::tensor_cpu(const Tensor& source, Tensor& target) const {
4848
);
4949
}
5050

51+
void GpuDevice::adam_step(
52+
const Tensor& gradient,
53+
Tensor& parameter,
54+
Tensor& exp_avg,
55+
Tensor& exp_avg_sq,
56+
double step_size,
57+
double beta1,
58+
double beta2,
59+
double eps,
60+
double bias_corr2_sqrt
61+
) const {
62+
//TODO
63+
}
64+
65+
5166
MemPool::MemPool(
5267
const GpuDevice& device,
5368
const std::vector<std::tuple<std::size_t, std::size_t, Tensor>>& cached_sizes_and_tensors,

madspace/src/gpu/device.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,17 @@ class GpuDevice : public Device {
5151
DevicePtr device_ptr() const override { return this; }
5252
DeviceType device_type() const override { return gpu_device_type; }
5353
void activate() const override { check_error(gpuSetDevice(_index)); }
54+
void adam_step(
55+
const Tensor& gradient,
56+
Tensor& parameter,
57+
Tensor& exp_avg,
58+
Tensor& exp_avg_sq,
59+
double step_size,
60+
double beta1,
61+
double beta2,
62+
double eps,
63+
double bias_corr2_sqrt
64+
) const override;
5465

5566
GpuDevice(const GpuDevice&) = delete;
5667
GpuDevice& operator=(GpuDevice&) = delete;

madspace/src/gpu/runtime.cu

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1477,7 +1477,7 @@ std::pair<TensorVec, TensorVec> GpuRuntime::run_backward(
14771477
update_pool_size_cache(mem_pool.total_sizes());
14781478
update_cached_tensors(mem_pool.reset(main_stream));
14791479
TensorVec global_grads;
1480-
for (auto& [name, index] : _grad_global_indices) {
1480+
for (std::size_t index : _grad_global_indices) {
14811481
global_grads.push_back(local_grads[index]);
14821482
}
14831483
check_error(gpuStreamSynchronize(main_stream));

0 commit comments

Comments
 (0)